/**
 * 文件名:MD5Util.java
 * 包名:com.yjhl.tus.system.util
 * 创建时间:2016年11月28日下午6:00:57
 * <p>Copyright ®医界互联 TUS 平台版权所有。</p>
 *
 */

package com.wx.demo.wcd.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 类名: MD5Util <br/>
 * 方法: 描述. <br/>
 * 详细描述: 描述. <br/>
 * 创建时间: 2016年11月28日 下午6:00:57 <br/>
 *
 * @author 鲁晓磊 Email:luxiaolei@yijiehulian.com
 * @version
 * @since JDK 1.8
 */
public class MD5Util {
	/**
	 * MD5:(MD5加密方法). <br/>
	 *
	 * @author 赵旭 联系方式 18501028853
	 * @param s
	 *            加密字符串
	 * @return
	 * @throws NoSuchAlgorithmException
	 * @since JDK 1.8
	 */
	public final static String MD5(String s) throws NoSuchAlgorithmException {

		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };

		byte[] btInput = s.getBytes();

		// 获得MD5摘要算法的 MessageDigest 对象
		MessageDigest mdInst = MessageDigest.getInstance("MD5");

		// 使用指定的字节更新摘要
		mdInst.update(btInput);

		// 获得密文
		byte[] md = mdInst.digest();

		// 把密文转换成十六进制的字符串形式
		int j = md.length;
		char str[] = new char[j * 2];
		int k = 0;

		for (int i = 0; i < j; i++) {

			byte byte0 = md[i];
			str[k++] = hexDigits[byte0 >>> 4 & 0xf];
			str[k++] = hexDigits[byte0 & 0xf];
		}

		return new String(str);
	}
}
